'use strict';

const { Listener } = require('egg-bus');

class DemoListener extends Listener {
  static get watch() {
    return [ 'opened', 'visited' ]; // 监听的事件名称
  }

  static get queue() {
    return 'queue_name'; // 使用的队列名称
  }

  static get attempts() {
    return 5; // 重试次数
  }

  async run(event, job) {
    // listener 任务运行时调用
    // 与 job 不同，第一个参数是 event 对象，其中包含以下值：
    // - name 事件名称
    // - data 数据
    // 第二个参数是 Bull 的原始 Job 对象
    // 通过 this.ctx 和 this.app 分别获取 egg 的 Context 和 Application 对象
    console.log(event.name, event.data, process.pid);
  }

  failed(event, error, job) {
    // 当 listener 失败并重试达到限定次数后调用
    console.log('--- event', event.name, event.data);
  }
}

module.exports = DemoListener;

